package com.myk.game.heroscuffle.game;

import com.myk.game.heroscuffle.data.HeroParam;

/**
 * 英雄角色的游戏中状态
 */
public class HeroState {

    public boolean isAlive; //是否活着
    public boolean isActioned; //是否行动过
    public boolean isPlayer; //是否玩家操作的英雄
    public Hero recentPrey; //最近一次我攻击的猎物
    public Hero recentEnemy; //最近一次攻击我的仇人
    public double exactRate; //默认精准值（英雄服从玩家的概率和英雄攻击仇恨目标的概率）

    public HeroState() {
        this.isAlive = true;
        this.isActioned = false;
        this.isPlayer = false;
        this.exactRate = HeroParam.EXACT_RATE;
    }

    public void setPlayer() {
        this.isPlayer = true;
    }

    public void setDeath() {
        this.isAlive = false;
    }

    public Hero getAliveEnemy() {
        if (recentEnemy != null && recentEnemy.state.isAlive) return recentEnemy;
        else return null;
    }

    public Hero getAlivePrey() {
        if (recentPrey != null && recentPrey.state.isAlive) return recentPrey;
        else return null;
    }

    /**
     * 获取互有恩怨的世仇，即既是最近我攻击的人，又是最近攻击我的人
     */
    public Hero getAliveFeud() {
        Hero aliveEnemy = getAliveEnemy();
        Hero alivePrey = getAlivePrey();
        if (aliveEnemy == null || alivePrey == null) {
            return null;
        }
        if (aliveEnemy != alivePrey) {
            return null;
        }
        return aliveEnemy;
    }
}
